home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 September / Macworld (1998-09).dmg / Serious Demos / DesignWorks 4.0.1 Demo PPC / Design Kits / PCB Shared Items / Scripts / PCB Error Script < prev    next >
Text File  |  1997-05-28  |  4KB  |  212 lines

  1. {
  2.   Error checking script for Generic PCB Design Kit
  3.   C. Dewhurst, May 22, 1997
  4.   ©1996 Capilano Computing Systems Ltd.
  5.   
  6.   This script checks for:
  7.   
  8.   - Devices without a package code
  9.     - Bad device names
  10.     - Bad or duplicate pin numbers
  11.     - Bad or duplicate signal names
  12. }
  13. $IF($NOT($ISFLAT))
  14. $NULL($ALERT1(This report script will only work in Flat hierarchy mode!))
  15. $ABORT
  16. $END
  17. {
  18.   First, see if we're clearing all errors
  19. }
  20. $IF($EQ(&_Operation, UnmarkOK))
  21. $REPORTOFF
  22. $IF($NOT($ALERT2(This will clear all Mark as OK settings in this design!)))
  23. $ABORT
  24. $END
  25. $DEVICES$CLEARERRORS
  26. $SIGNALS$CLEARERRORS
  27. $ABORT
  28. $END
  29. {
  30.   If we're doing a "Mark as OK", we don't want any report
  31. }
  32. $IF($EQ(&_Operation, MarkOK))
  33. $REPORTOFF
  34. $IF($NOT($ALERT2(This will mark all current errors as OK!)))
  35. $ABORT
  36. $END
  37. $ELSE
  38. $CREATEREPORT($DESIGNNAME.Errors) $PROMPT
  39. Error report for $DESIGNNAME on $DATE at $TIME
  40. $END
  41. {
  42.   Listing defaults
  43. }
  44. $PROGRESS $PERCENTOFF
  45. $SIGSOURCE(Ground)
  46. $SIGSOURCE(Plus5V) &Power
  47. $DESIGNSIGSOURCE &SigSources
  48. $AUTONUMBER(3)
  49. $BUSNAMEON(_)
  50. $SETVAR(_AnyErrors, 0)
  51. {
  52.   Issue a warning if any devices have no package code
  53. }
  54. $FIND $DEVICES $NOT(&Package) $ERRORBITOFF(8)
  55. $IF($GT($DEVCOUNT, 0))
  56.  
  57. The following devices have no package code:
  58.  
  59. $SORT $DEVICES $DEVNAME
  60. $COMBDEVSON
  61. $IF($EQ(&_Operation, MarkOK))
  62. $DEVICES$SETERRORBIT(8)
  63. $ELSE
  64. $DEVICES$DEVNAME    $TYPENAME    $PAGE
  65. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $DEVCOUNT))
  66. $END
  67. $END
  68. {
  69.   Check for multiple package codes in same package
  70. }
  71. $FIND $DEVICES
  72. $SORT $DEVICES $DEVNAME
  73. $COMBDEVSON
  74. $FIND $NOCLEAR $DEVICES $GT($COUNTVALUES(&Package), 1) $ERRORBITOFF(9)
  75. $IF($GT($DEVCOUNT, 0))
  76.  
  77. The following devices have inconsistent package codes:
  78.  
  79. $SORT $DEVICES $DEVNAME
  80. $COMBDEVSON
  81. $IF($EQ(&_Operation, MarkOK))
  82. $DEVICES$SETERRORBIT(9)
  83. $ELSE
  84. $DEVICES$DEVNAME    $TYPENAME    $PAGE
  85. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $DEVCOUNT))
  86. $END
  87. $END
  88. {
  89.   Check for duplicate pin numbers
  90. }
  91. $PROGRESS(Checking pin numbers)
  92. $FIND $DEVICES
  93. $SORT $DEVICES $DEVNAME
  94. $COMBDEVSON
  95. $DEVPINFORMAT $GT($SAMEPINCOUNT, 1)
  96. $FIND $SIGNALS
  97. $FIND $NOCLEAR $DEVICES $NONBLANK($MERGE$PINS) $ERRORBITOFF(10)
  98. $IF($GT($DEVCOUNT, 0))
  99.  
  100. The following devices have duplicate pin numbers:
  101.  
  102. $SORT $DEVICES $DEVNAME
  103. $COMBDEVSON
  104. $IF($EQ(&_Operation, MarkOK))
  105. $DEVICES$SETERRORBIT(10)
  106. $ELSE
  107. $DEVICES$DEVNAME    $TYPENAME    $PAGE
  108. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $DEVCOUNT))
  109. $END
  110. $END
  111. {
  112.   Check for invalid pin numbers
  113. }
  114. $DEVPINFORMAT $REGEXP(\D?|.*\D.*, $PINNUM)
  115. $FIND $DEVICES $NONBLANK($PINS) $ERRORBITOFF(11)
  116. $IF($GT($DEVCOUNT, 0))
  117.  
  118. The following devices have bad pin numbers:
  119.  
  120. $SORT $DEVICES $DEVNAME
  121. $COMBDEVSON
  122. $IF($EQ(&_Operation, MarkOK))
  123. $DEVICES$SETERRORBIT(11)
  124. $ELSE
  125. $DEVICES$DEVNAME    $TYPENAME    $PAGE
  126. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $DEVCOUNT))
  127. $END
  128. $END
  129. {
  130.   Check for bad device names
  131. }
  132. $PROGRESS(Checking device and signal names)
  133. $FIND $DEVICES $NOT($REGEXP(\w+, $DEVNAME)) $ERRORBITOFF(0)
  134. $IF($GT($DEVCOUNT, 0))
  135.  
  136. The following devices have bad device names:
  137.  
  138. $SORT $DEVICES $DEVNAME
  139. $COMBDEVSON
  140. $IF($EQ(&_Operation, MarkOK))
  141. $DEVICES$SETERRORBIT(0)
  142. $ELSE
  143. $DEVICES$DEVNAME    $TYPENAME    $PAGE
  144. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $DEVCOUNT))
  145. $END
  146. $END
  147. {
  148.   Check for bad signal names
  149. }
  150. $UNNAMEDSIGS(????)
  151. $FIND $SIGNALS $NOT($REGEXP(\w+, $SIGNAME)) $ERRORBITOFF(0)
  152. $IF($GT($SIGCOUNT, 0))
  153.  
  154. The following signals have bad names:
  155.  
  156. $SORT $SIGNALS $SIGNAME
  157. $IF($EQ(&_Operation, MarkOK))
  158. $SIGNALS$SETERRORBIT(0)
  159. $ELSE
  160. $FIND $DEVICES
  161. $SIGNALS$SIGNAME    $PINS
  162. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $SIGCOUNT))
  163. $END
  164. $END
  165. {
  166.   Check for duplicate signal names
  167. }
  168. $FIND $SIGNALS
  169. $COMBSIGSON
  170. $SORT $SIGNALS $SIGNAME
  171. $FIND $NOCLEAR $SIGNALS $COUNT(2) $ERRORBITOFF(1)
  172. $IF($GT($SIGCOUNT, 0))
  173.  
  174. The following signals have duplicate names:
  175.  
  176. $SORT $SIGNALS $SIGNAME
  177. $IF($EQ(&_Operation, MarkOK))
  178. $SIGNALS$SETERRORBIT(1)
  179. $ELSE
  180. $SIGNALS$SIGNAME    $PAGE
  181. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $SIGCOUNT))
  182. $END
  183. $END
  184. {
  185.   Check for null signals
  186. }
  187. $FIND $DEVICES
  188. $FIND $SIGNALS $NUMPINS(1) $NOT($NUMPINS(2)) $ERRORBITOFF(2)
  189. $COMBSIGSOFF
  190. $IF($GT($SIGCOUNT, 0))
  191.  
  192. The following signals have only one pin connection:
  193.  
  194. $SORT $SIGNALS $SIGNAME
  195. $IF($EQ(&_Operation, MarkOK))
  196. $SIGNALS$SETERRORBIT(2)
  197. $ELSE
  198. $SIGNALS$SIGNAME    $PAGE
  199. $SETVAR(_AnyErrors, $PLUS(&_AnyErrors, $SIGCOUNT))
  200. $END
  201. $END
  202. {
  203.   If we're reporting, put up an error box
  204. }
  205. $IF($NE(&_Operation, MarkOK))
  206. $IF($GT(&_AnyErrors, 0))
  207. $NULL($ALERT1(&_AnyErrors errors found!))
  208. $ELSE
  209. $NULL($ALERT1(No errors found!))
  210. $END
  211. $END
  212.